package cn.bonoon.kernel.web.annotations.form;

/**
 * <pre>
 * 在查看详细界面的情况，可以在的行的数据后面追加其它字段的显示。
 * 被追加在列后面的属性，只能以文本的形式出现。
 * 被追加的属性，必须是当前对象的可访问的属性。并不是直接读取数据库 实体的属性。
 * 
 * 本注解被用于{@link PropertyDetail#append()}
 * </pre>
 * 
 * @author jackson
 * 
 */
public @interface PropertyAppend {
	String value();

	AppendType type() default AppendType.NONE;

	/**
	 * <pre>
	 * 在生成详细界面时，指定了在一个属性后面追加另一个属性，则需要指明后面属性与前面属性的分隔的符号。
	 * 默认定义的是使用"<font color='red'>()</font>"把后面的属性括起来。
	 * </pre>
	 * 
	 * @author jackson
	 * 
	 */
	public enum AppendType {
		/**
		 * 什么都不加，默认是两个空格"&nbsp;&nbsp;"
		 */
		NONE("&nbsp;&nbsp;"),
		/**
		 * 逗号"<font color='red'>,</font>"
		 */
		COMMA(","),
		/**
		 * 点号"<font color='red'>.</font>"
		 */
		POINT("."),
		/**
		 * 括号"<font color='red'>()</font>"
		 */
		BRACKETS("("),
		/**
		 * 方括号"<font color='red'>[]</font>"
		 */
		SQUARE("["),
		/**
		 * 大括号"<font color='red'>{}</font>"
		 */
		BRACES("{"),
		/**
		 * 尖括号"<font color='red'><></font>"
		 */
		ANGLE("&lt;"),
		/**
		 * 斜杠"<font color='red'>/</font>"
		 */
		SLASH("/"),
		/**
		 * 反斜杠"<font color='red'>\</font>"
		 */
		BACKSLASH("\\"),
		/**
		 * 回车换行
		 */
		ENTER("<br/>"),
		/**
		 * 添加的属性为固定的文本
		 */
		TEXT("");
		private final String symbol;
	
		private AppendType(String symbol) {
			this.symbol = symbol;
		}
	
		public String getSymbol() {
			return symbol;
		}
	}
}
